package com.one.system.controll.question;

import com.one.common.core.controller.BaseController;
import com.one.common.core.domain.R;
import com.one.common.core.domain.TableDataInfo;
import com.one.system.domain.question.dto.QuestionAddDTO;
import com.one.system.domain.question.dto.QuestionEditDTO;
import com.one.system.domain.question.dto.QuestionQueryDTO;
import com.one.system.domain.question.vo.QuestionDetailVO;
import com.one.system.service.question.IQuestionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/question")
public class QuestionController extends BaseController {

    @Autowired
    private IQuestionService questionService;


    /**
     *      接口概述  根据过滤条件返回对应的题目列表信息
     *      接口地址  /question/list
     *      请求方法  get
     *      请求参数  QuestionQueryDTO
     *      响应数据  TableDataInfo
     */
    @GetMapping("/list")
    public TableDataInfo list(QuestionQueryDTO questionDTO){
         return getTableDataInfo(questionService.list(questionDTO));
    }
    /**
     *      接口概述  题目新增功能
     *      接口地址  /question/add
     *      请求方法  post
     *      请求参数  QuestionAddDTO
     *      响应数据  void
     */
    @PostMapping("/add")
    public R<Void> add(@RequestBody QuestionAddDTO questionAddDTO){
        return toR(questionService.add(questionAddDTO));
    }

    /**
     *      接口概述  查询题目详情，用户点击编辑时将题目信息展示出来
     *      接口地址  /question/detail
     *      请求方法  get
     *      请求参数  questionId
     *      响应数据  QuestionDetailVO
     */
    @GetMapping("/detail")
    public R<QuestionDetailVO> detail(Long questionId){
        return R.ok(questionService.detail(questionId));
    }
    /**
     *      接口概述  题目编辑功能
     *      接口地址  /question/edit
     *      请求方法  put
     *      请求参数  questionEditDTO
     *      响应数据  int
     */
    @PutMapping("/edit")
    public R<Void> edit(@RequestBody  QuestionEditDTO questionEditDTO){
        return toR(questionService.edit(questionEditDTO));
    }
    /**
     *      接口概述  题目删除功能
     *      接口地址  /question/delete
     *      请求方法  delete
     *      请求参数  questionId
     *      响应数据  int
     */

    @DeleteMapping("/delete")
    public R<Void> delete(Long questionId){
        return toR(questionService.delete(questionId));
    }

}
